/*
 * CaseFuzzy.h
 *
 *  Created on: Jan 30, 2012
 *      Author: godinho
 */

#ifndef CASEFUZZY_H_
#define CASEFUZZY_H_

namespace fl {
class FuzzyEngine;
class LinguisticVariable;
class InputLVar;
class OutputLVar;
class RuleBlock;
class CompoundTerm;
}

class CaseFuzzy {
public:
    CaseFuzzy();
    virtual ~CaseFuzzy();

    static CaseFuzzy* getInstance();

    int fuzzyfyQueue(int size);

    int desfuzzyfyExtension(int extension);

public:
    void initRules();
    void initQueueTerms(fl::LinguisticVariable* queueLinguisticVar);
    void initExtensionTerms();

private:
    fl::RuleBlock* mRuleBloc;
    fl::FuzzyEngine* mEngine;
    fl::InputLVar* mQueue;
    fl::OutputLVar* mExtension;

    static CaseFuzzy* mInstance;
};

#endif /* CASEFUZZY_H_ */
